package com.zaimokuza.cn.util;


import com.zaimokuza.cn.entity.enums.CustomizeExceptionEnum;
import com.zaimokuza.cn.util.grace.GraceException;
import org.apache.commons.lang3.StringUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 断言相关工具类
 *
 * @author zaimokuza
 */
public class AssertUtils {

    /**
     * 断言对象为空对象
     *
     * @param object                 对象
     * @param customizeExceptionEnum 返回信息枚举
     */
    public static void isNull(Object object, CustomizeExceptionEnum customizeExceptionEnum) {
        // 如果对象不为空，根据返回信息枚举抛出返回信息异常
        if (object != null) {
            GraceException.display(customizeExceptionEnum);
        }
    }

    /**
     * 断言对象不为空对象
     *
     * @param object                 对象
     * @param customizeExceptionEnum 返回信息枚举
     */
    public static void notNull(Object object, CustomizeExceptionEnum customizeExceptionEnum) {
        // 如果对象为空，根据返回信息枚举抛出返回信息异常
        if (object == null) {
            GraceException.display(customizeExceptionEnum);
        }
    }

    /**
     * 断言字符串为有效字符串
     *
     * @param str                    字符串
     * @param customizeExceptionEnum 返回信息枚举
     */
    public static void notBlank(String str, CustomizeExceptionEnum customizeExceptionEnum) {
        // 如果对象不为空，根据返回信息枚举抛出返回信息异常
        if (StringUtils.isBlank(str)) {
            GraceException.display(customizeExceptionEnum);
        }
    }

    /**
     * 断言结果为false
     *
     * @param result                 判断结果
     * @param customizeExceptionEnum 返回信息枚举
     */
    public static void isFalse(Boolean result, CustomizeExceptionEnum customizeExceptionEnum) {
        // 如果结果为True，根据返回信息枚举抛出返回信息异常
        if (result) {
            GraceException.display(customizeExceptionEnum);
        }
    }

    /**
     * 断言匹配正则
     *
     * @param str                    需要校验的字符串
     * @param regex                  正则表达式
     * @param customizeExceptionEnum 返回信息枚举
     */
    public static void isMatch(String str, String regex, CustomizeExceptionEnum customizeExceptionEnum) {
        // 进行正则校验
        Matcher matcher = Pattern.compile(regex).matcher(str);
        // 如果校验结果为false，根据返回信息枚举抛出返回信息异常
        if (!matcher.matches()) {
            GraceException.display(customizeExceptionEnum);
        }
    }

}
